home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 1995-08-10 | 8.8 KB | 290 lines | [ TEXT/MPS ]
(* File: CodeFragments.mod Contains: Code Fragment Manager Interfaces. Version: Technology: System 7.5 Package: Universal Interfaces 2.0 in “MPW Latest” on ETO #17 Copyright: © 1984-1995 by Apple Computer, Inc. All rights reserved. Bugs?: If you find a problem with this file, use the Apple Bug Reporter stack. Include the file and version information (from above) in the problem description and send to: Internet: apple.bugs.applelink.apple.com AppleLink: APPLE.BUGS *) (*$IF UNDEFINED OLDROUTINENAMES*) (*$SET OLDROUTINENAMES FALSE*) (*$END*) (*$TAGS-*) (*$CALLING PASCAL*) MODULE CodeFragments; IMPORT SYSTEM, Types, Files; (* $PUSH*) (* $ALIGN MAC68K*) (* $LibExport+*) CONST kCFragResourceType* = LONG("cfrg"); kCFragResourceID* = 0; kCFragLibraryFileType* = LONG("shlb"); TYPE CFragArchitecture* = Types.OSType; CONST kPowerPCCFragArch* = LONG("pwpc"); kMotorola68KCFragArch* = LONG("m68k"); kAnyCFragArch* = $3F3F3F3F; (*$IF GENERATINGPOWERPC *) kCurrentCFragArch* = kPowerPCCFragArch; (*$END*) (*$IF GENERATING68K *) kCurrentCFragArch* = kMotorola68KCFragArch; (*$END*) TYPE CFragConnectionID* = Types.UInt32; CFragClosureID* = Types.UInt32; CFragContextID* = Types.UInt32; CFragContainerID* = Types.UInt32; TYPE CFragLoadOptions* = Types.UInt32; CONST kLoadCFrag* = $01; (* Try to use existing copy, load if not found.*) kFindCFrag* = $02; (* Try find an existing copy, don't load if not found.*) kNewCFragCopy* = $05; (* Load a new copy whether one already exists or not.*) kInplaceCFrag* = $80; (* Use data sections directly in the container.*) kUnresolvedCFragSymbolAddress* = 0; TYPE CFragSymbolClass* = Types.UInt8; CONST kCodeCFragSymbol* = 0; kDataCFragSymbol* = 1; kTVectorCFragSymbol* = 2; kTOCCFragSymbol* = 3; kGlueCFragSymbol* = 4; TYPE CFragUsage* = Types.UInt8; CONST kImportLibraryCFrag* = 0; (* Standard CFM import library.*) kApplicationCFrag* = 1; (* Macintosh application.*) kDropInAdditionCFrag* = 2; (* Private extension to an application or library.*) kIsCompleteCFrag* = 0; (* A "base" fragment, not an update.*) kFirstCFragUpdate* = 1; (* The first update, others are numbered 2, 3, ...*) TYPE CFragLocatorKind* = Types.UInt8; CONST kMemoryCFragLocator* = 0; (* Container is already addressable.*) kDataForkCFragLocator* = 1; (* Container is in a file's data fork.*) kResourceCFragLocator* = 2; (* Container is in a file's resource fork.*) kByteStreamCFragLocator* = 3; (* Container is in a given file fork as a byte stream.*) kCFragGoesToEOF* = 0; TYPE CFragOldMemoryLocator* = (*ΔΔPACKEDΔΔ*) RECORD address*: Types.LogicalAddress; length*: Types.UInt32; inPlace*: BOOLEAN; reserved3a*: ARRAY 3 (*ΔΔ[0..2]ΔΔ*) OF Types.UInt8; (* ! Do not use this!*) END; CFragHFSDiskFlatLocator* = RECORD fileSpec*: Files.FSSpecPtr; offset*: Types.UInt32; length*: Types.UInt32; END; (* ! This must have a file specification at the same offset as a data fork locator!*) CFragHFSSegmentedLocator* = (*ΔΔPACKEDΔΔ*) RECORD fileSpec*: Files.FSSpecPtr; rsrcType*: Types.OSType; rsrcID*: Types.SInt16; reserved2a*: Types.UInt16; (* ! Do not use this!*) END; CFragHFSLocator* = RECORD where*: Types.SInt32; (* Really of type CFragLocatorKind.*) (*ΔΔ CASE INTEGER OF 0: ( *) END; CFragDiskLocator* = RECORD(CFragHFSLocator) onDisk*: CFragHFSDiskFlatLocator; (* First so debugger shows this form.*) (*ΔΔ ); 1: ( *) END; CFragMemoryLocator* = RECORD(CFragHFSLocator) inMem*: CFragOldMemoryLocator; (*ΔΔ ); 2: ( *) END; CFragSegmentedLocator* = RECORD(CFragHFSLocator) inSegs*: CFragHFSSegmentedLocator; (*ΔΔ );*) END; CFragHFSLocatorPtr* = POINTER TO CFragHFSLocator; (* -------------------------------------------------------------------------------------------*) (* The parameter block passed to fragment initialization functions. The locator and name*) (* pointers are valid only for the duration of the initialization routine. I.e. if you want*) (* to save the locator or name, save the contents, not the pointers. Initialization routines*) (* take one parameter, a pointer to the parameter block, and return a success/failure result.*) (* ! Note that the initialization function returns an Types.OSErr. Any result other than noErr will*) (* ! cause the entire load to be aborted at that point.*) CFragInitBlock* = RECORD contextID*: CFragContextID; closureID*: CFragClosureID; connectionID*: CFragConnectionID; fragLocator*: CFragHFSLocator; libName*: Types.StringPtr; reserved4a*: Types.UInt32; (* ! Do not use this!*) reserved4b*: Types.UInt32; (* ! Do not use this!*) reserved4c*: Types.UInt32; (* ! Do not use this!*) reserved4d*: Types.UInt32; (* ! Do not use this!*) END; CFragInitBlockPtr* = POINTER TO CFragInitBlock; CFragInitFunction* = (*ΔΔ Types.ProcPtr;*) PROCEDURE ((*CONST*)VAR theInitBlock: CFragInitBlock): Types.OSErr; CFragTermRoutine* = (*ΔΔ Types.ProcPtr;*) PROCEDURE ; CFragInitFunctionPtr* = SYSTEM.PTR (*ΔΔ POINTER TO CFragInitFunction*); CFragTermRoutinePtr* = SYSTEM.PTR (*ΔΔ POINTER TO CFragTermRoutine*); (* §*) (* ===========================================================================================*) (* Routines*) (* ========*) PROCEDURE GetSharedLibrary*(libName: Types.ConstStr63Param; archType: Types.OSType; loadFlags: CFragLoadOptions; VAR connID: CFragConnectionID; VAR mainAddr: Types.Ptr; VAR errMessage: Types.Str255): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $3F3C, $0001, $AA5A; (*$END*) PROCEDURE GetDiskFragment*((*CONST*)VAR fileSpec: Files.FSSpec; offset: Types.UInt32; length: Types.UInt32; fragName: Types.ConstStr63Param; loadFlags: CFragLoadOptions; VAR connID: CFragConnectionID; VAR mainAddr: Types.Ptr; VAR errMessage: Types.Str255): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $3F3C, $0002, $AA5A; (*$END*) PROCEDURE GetMemFragment*(memAddr: (*ΔΔUNIVΔΔ*) Types.Ptr; length: Types.UInt32; fragName: Types.ConstStr63Param; loadFlags: CFragLoadOptions; VAR connID: CFragConnectionID; VAR mainAddr: Types.Ptr; VAR errMessage: Types.Str255): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $3F3C, $0003, $AA5A; (*$END*) PROCEDURE CloseConnection*(VAR connID: CFragConnectionID): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $3F3C, $0004, $AA5A; (*$END*) PROCEDURE FindSymbol*(connID: CFragConnectionID; symName: Types.ConstStr255Param; VAR symAddr: Types.Ptr; VAR symClass: CFragSymbolClass): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $3F3C, $0005, $AA5A; (*$END*) PROCEDURE CountSymbols*(connID: CFragConnectionID; VAR symCount: LONGINT): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $3F3C, $0006, $AA5A; (*$END*) PROCEDURE GetIndSymbol*(connID: CFragConnectionID; symIndex: LONGINT; VAR symName: Types.Str255; VAR symAddr: Types.Ptr; VAR symClass: CFragSymbolClass): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $3F3C, $0007, $AA5A; (*$END*) (*$IF OLDROUTINENAMES *) TYPE ConnectionID* = CFragConnectionID; LoadFlags* = CFragLoadOptions; SymClass* = CFragSymbolClass; MemFragment* = CFragOldMemoryLocator; DiskFragment* = CFragHFSDiskFlatLocator; SegmentedFragment* = CFragHFSSegmentedLocator; FragmentLocator* = CFragHFSLocator; FragmentLocatorPtr* = CFragHFSLocatorPtr; InitBlock* = CFragInitBlock; InitBlockPtr* = CFragInitBlockPtr; ConnectionInitializationRoutine* = CFragInitFunction; ConnectionTerminationRoutine* = CFragTermRoutine; CONST kPowerPCArch* = kPowerPCCFragArch; kMotorola68KArch* = kMotorola68KCFragArch; kAnyArchType* = kAnyCFragArch; kNoLibName* = 0; kNoConnectionID* = 0; kLoadLib* = kLoadCFrag; kFindLib* = kFindCFrag; kLoadNewCopy* = kNewCFragCopy; kUseInPlace* = kInplaceCFrag; kCodeSym* = kCodeCFragSymbol; kDataSym* = kDataCFragSymbol; kTVectSym* = kTVectorCFragSymbol; kTOCSym* = kTOCCFragSymbol; kGlueSym* = kGlueCFragSymbol; kInMem* = kMemoryCFragLocator; kOnDiskFlat* = kDataForkCFragLocator; kOnDiskSegmented* = kResourceCFragLocator; kIsLib* = kImportLibraryCFrag; kIsApp* = kApplicationCFrag; kIsDropIn* = kDropInAdditionCFrag; kFullLib* = kIsCompleteCFrag; kUpdateLib* = kFirstCFragUpdate; kWholeFork* = kCFragGoesToEOF; kCFMRsrcType* = kCFragResourceType; kCFMRsrcID* = kCFragResourceID; kSHLBFileType* = kCFragLibraryFileType; kUnresolvedSymbolAddress* = kUnresolvedCFragSymbolAddress; kPowerPC* = kPowerPCCFragArch; kMotorola68K* = kMotorola68KCFragArch; (*$END*) (* $ALIGN RESET*) (* $POP*) END CodeFragments.